package proceso.consulta.pozo;

import java.util.Calendar;

import modelo.pozo.PozoProduccion;

import org.hibernate.Query;
import org.hibernate.Session;

public class ConsultaPozo {

	private String identificador;
	private double este;
	private double norte;
	private String condicion;
	private String ubicacion;
	private String propietario;
	private String ultimaMedida;
	private Calendar fecha;
	private String caudalPromedio;
	private int nroMedidas;
	private String razon;
	public String getIdentificador() {
		return identificador;
	}
	public void setIdentificador(String identificador) {
		this.identificador = identificador;
	}
	public double getEste() {
		return este;
	}
	public void setEste(double este) {
		this.este = este;
	}
	public double getNorte() {
		return norte;
	}
	public void setNorte(double norte) {
		this.norte = norte;
	}
	public String getCondicion() {
		return condicion;
	}
	public void setCondicion(String condicion) {
		this.condicion = condicion;
	}
	public String getUbicacion() {
		return ubicacion;
	}
	public void setUbicacion(String ubicacion) {
		this.ubicacion = ubicacion;
	}
	public String getPropietario() {
		return propietario;
	}
	public void setPropietario(String propietario) {
		this.propietario = propietario;
	}
	public String getUltimaMedida() {
		return ultimaMedida;
	}
	public void setUltimaMedida(String ultimaMedida) {
		this.ultimaMedida = ultimaMedida;
	}
	public Calendar getFecha() {
		return fecha;
	}
	public void setFecha(Calendar fecha) {
		this.fecha = fecha;
	}
	public String getCaudalPromedio() {
		return caudalPromedio;
	}
	public void setCaudalPromedio(String caudalPromedio) {
		this.caudalPromedio = caudalPromedio;
	}
	public int getNroMedidas() {
		return nroMedidas;
	}
	public void setNroMedidas(int nroMedidas) {
		this.nroMedidas = nroMedidas;
	}
	public String getRazon() {
		return razon;
	}
	public void setRazon(String razon) {
		this.razon = razon;
	}
	
	public boolean valoresPozo(Session sess, String codigo) {
		
		Query q = sess.createQuery("from PozoProduccion where codigo like :codigo");
		q.setParameter("codigo",codigo);
		if(q.list().size() == 1) {
			identificador = codigo;
			PozoProduccion pozo = (PozoProduccion)q.list().get(0);
			este = pozo.getEste();
			norte = pozo.getNorte();
			if(pozo.isOperativo()) {
				condicion = "Opeativo";
			}
			else{
				condicion = "No esta operativo";
			}
			ubicacion = pozo.getUbicacion().getNombre();
			propietario = pozo.getUbicacion().getListaRegistro().get(0).getPropietario().getNombreProvisional();
			
			if(pozo.getListaCaudalMedido().size() > 0) {
				double promedio = 0;
				int cantidadMediciones = pozo.getListaCaudalMedido().size();
				ultimaMedida ="N/A";
				fecha = null;
				if(cantidadMediciones > 0) {
					for(int i=0; i<cantidadMediciones; i++){
						promedio += pozo.getListaCaudalMedido().get(i).getGasto();
					}
					promedio = promedio/cantidadMediciones;
					ultimaMedida = Double.toString(pozo.getListaCaudalMedido().get(cantidadMediciones-1).getGasto());
					fecha = pozo.getListaCaudalMedido().get(cantidadMediciones-1).getFechaMedicion();
				}
				caudalPromedio = Double.toString(promedio);
				
			}
			return true;
		}
		else{
			razon = "No se encuentra un pozo con ese codigo";
		}
		return false;
	}
	
	
}
